/*
 * SoftwareSAR - 1.0
 */
package br.com.cpqd.ssar.mediador;

import br.com.cpqd.ssar.geradormalha.RequisicoesGeradorMalha;
import br.com.cpqd.ssar.importadores.RequisicoesImportadores;
import br.com.cpqd.ssar.modeladorbasico.RequisicoesModeladorBasico;
import br.com.cpqd.ssar.posprocessamento.RequisicoesPosProcessamento;
import br.com.cpqd.ssar.processamento.RequisicoesProcessamento;
import br.com.cpqd.ssar.utilitarias.Geometria;
import br.com.cpqd.ssar.utilitarias.Material;
import java.util.Vector;

/**
 * Interface do Integrador de Servicos dos Módulos
 * @author Rafael Buck
 * @version 1.3
 */
public interface RequisicaoServicos extends RequisicoesGeradorMalha,
        RequisicoesImportadores, RequisicoesModeladorBasico, RequisicoesPosProcessamento,
        RequisicoesProcessamento, RequisicaoFontesEletromagneticas {


    /**
     * Salvar a cena de simulação e todos os parametros necessários
     */
    public void salvarProjeto();
    
    /**
     * Abre um projeto SSAR
     */
    public void abrirProjeto();

    
    /**
     * Cria um novo projeto SSAR
     */
    public void novoProjeto();

    /**
     * Abrir uma simulação já armazenada em disco
     */
    public void carregarProjeto();

    /**
     * Configura a simulação para o método do FDTD
     * @return boolean
     */
    public boolean configurarSimulacaoFDTD();

    /**
     * Oferece uma lista de materiais para se realizar uma seleção
     * @return Material selecionado da lista
     */
    public Material setMaterial();

    /**
     * Obtem material referente ao id passado
     * @param idMaterial int
     * @return Material referente ao id
     */
    public Material obterMaterial(int idMaterial);

    /**
     * Determina o prefixo dos arquivos gerados para o execução do método FDTD
     * @return Sring
     */
    public String obterNomeArquivoMalhaFDTD();
    
    /**
     * Determina o prefixo dos arquivos gerados para o execução do método FDTD
     * @return Sring
     */
    public String obterNomeArquivoMateriaisFDTD();
    
    /**
     * Determina o prefixo dos arquivos gerados para o execução do método FDTD
     * @return Sring
     */
    public String obterNomeArquivoDeltasFDTD();
    
    /**
     * Obtém a Unidade Dimensional do Projeto
     * @return String Unidade Dimensional usada no projeto
     */
    public String getUnidadeDimensional();
    
    /**
     * Seta a Unidade Dimensional
     * @param unidadeDimensional String (valores aceitos: "mm"/"cm"/"m")
     */
    public void setUnidadeDimensional(String unidadeDimensional);
    
    /**
     * Desabilita a Mudança da Unidade Dimensional por parte do Usuário
     * (Somente usada quando se importa uma malha)
     * @param opcao boolean
     */
    public void travarUnidadeDimensional(boolean opcao);

    /**
     * Reinicializa alguns módulos do Mediador para a abertura de outro Projeto
     */
    public void reinicializarSistema();

    /**
     * Retorna um diálogo de informação
     * @param mensagem String
     */
    public void exibirMensagemInformacao(String mensagem);

    /**
     * Retorna um diálogo de alerta
     * @param mensagem String
     */
    public void exibirMensagemAlerta(String mensagem);

    /**
     * Retorna um diálogo de erro
     * @param mensagem String
     */
    public void exibirMensagemErro(String mensagem);

    /**
     * Retorna diálogo de Decisão Sim/Não
     * @param mensagem String
     * @return int opção selecionada: 0 = Sim, 1 = Não
     */
    public int exibirMensagemEscolhaSimNao(String mensagem);

    /**
     * Retorna diálogo de Decisão Sim/Não/Cancelar
     * @param mensagem String
     * @return int opção selecionada: 0 = Sim, 1 = Não, 2 = Cancelar
     */
    public int exibirMensagemEscolhaSimNaoCancelar(String mensagem);
    
    /**
     * Retorna as configuracoes das camadas PML armazenadas no arquivo de configuracao
     * @return camadasPML Vector
     */
    public Vector getCamadasPML();
    
    public String getCaminhoProjeto();
    
    public String getCaminhoResultadosProjeto();

    public String getNomeProjeto();


    public Geometria importarSTL();


    
}
